package com.wande.dataplatform.service;

import com.wande.common.mybatis.core.page.PageQuery;
import com.wande.common.mybatis.core.page.TableDataInfo;
import com.wande.dataplatform.domain.DorisStorage;
import com.wande.dataplatform.domain.vo.*;

import java.util.List;

/**
 * Doris存储管理Service接口
 *
 * @author dataplatform
 */
public interface IDorisStorageService {

    /**
     * 查询Doris存储元数据列表
     */
    TableDataInfo<DorisStorageVO> queryPageList(DorisStorage bo, PageQuery pageQuery);

    /**
     * 查询Doris存储元数据列表
     */
    List<DorisStorageVO> queryList(DorisStorage bo);

    /**
     * 查询Doris存储元数据详情
     */
    DorisStorageVO queryById(Long id);

    /**
     * 同步Doris数据库和表信息
     */
    void syncDorisMetadata();

    /**
     * 获取数据库树形结构
     */
    List<DorisDatabaseTreeVO> getDatabaseTree();

    /**
     * 查询表结构
     */
    List<DorisTableStructureVO> getTableStructure(String databaseName, String tableName);

    /**
     * 查询表统计信息
     */
    DorisTableStatisticsVO getTableStatistics(String databaseName, String tableName);

    /**
     * 预览表数据
     */
    DorisDataPreviewVO previewTableData(String databaseName, String tableName, Integer pageNum, Integer pageSize);

    /**
     * 查询分区列表
     */
    List<DorisPartitionVO> getPartitionList(Long storageId);

    /**
     * 删除过期分区
     */
    void deletePartition(String databaseName, String tableName, String partitionName);
}
